package abd.pr1.Controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.sql.DataSource;

import abd.pr1.Interface.NuevoActorPersonajeWindow;
import abd.pr1.Interface.NuevoComentarioEpisodioWindow;
import abd.pr1.Interface.NuevoComentarioSerieWindow;
import abd.pr1.Mappers.ActoresMapper;
import abd.pr1.Mappers.ComentariosEpisodiosMapper;
import abd.pr1.Mappers.ComentariosSeriesMapper;
import abd.pr1.Mappers.PersonajesActoresMapper;
import abd.pr1.Mappers.PersonajesMapper;
import abd.pr1.Models.Actor;
import abd.pr1.Models.ComentarioEpisodio;
import abd.pr1.Models.ComentarioSerie;
import abd.pr1.Models.Episodio;
import abd.pr1.Models.Personaje;
import abd.pr1.Models.PersonajeActor;
import abd.pr1.Models.Serie;
import abd.pr1.Models.Usuario;

public class NuevoActorPersonajeWindowController  implements ActionListener{

	
	private AdminEditarEpisodioWindowController adminEditarEpisodioWindowController;
	private NuevoActorPersonajeWindow nuevoActorPersonajeWindow;
	private DataSource ds;
	private Episodio episodio;
	public NuevoActorPersonajeWindowController(AdminEditarEpisodioWindowController adminEditarEpisodioWindowController,NuevoActorPersonajeWindow nuevoActorPersonajeWindow,DataSource ds,Episodio episodio){
			this.nuevoActorPersonajeWindow=nuevoActorPersonajeWindow;
			this.adminEditarEpisodioWindowController=adminEditarEpisodioWindowController;
			this.ds=ds;
			this.episodio=episodio;
			this.nuevoActorPersonajeWindow.addListener(this);
			this.refreshActorPersonaje();
		}
	
	
	
	public void refreshActorPersonaje() {
		List<Actor> actores = new ActoresMapper(ds).all();
		this.nuevoActorPersonajeWindow.setActores(actores.toArray());
		
		List<Personaje> personajes = new PersonajesMapper(ds).all();
		this.nuevoActorPersonajeWindow.setPersonajes(personajes.toArray());
		
		
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getActionCommand().equals("guardar_actor_personaje")){
			
			List<Personaje> idsPersonaje=new PersonajesMapper(ds).queryByExample(new Personaje(null, nuevoActorPersonajeWindow.getPersonajeSelected(), null));
			int idPersonaje=idsPersonaje.get(0).getId();
			
			List<Actor> idsActor=new ActoresMapper(ds).queryByExample(new Actor(null, nuevoActorPersonajeWindow.getActorSelected(), null,null));
			int idActor=idsActor.get(0).getId();
			List<PersonajeActor> personajeActor=new PersonajesActoresMapper(ds).queryByExample(new PersonajeActor(idPersonaje, idActor, episodio.getId()));
			if(personajeActor.size()<=0){
			new PersonajesActoresMapper(ds).insert(new PersonajeActor(idPersonaje, idActor, episodio.getId()));
			adminEditarEpisodioWindowController.refreshEpisodio();
			}
			nuevoActorPersonajeWindow.dispose();
		}else if(e.getActionCommand().equals("cerrar_actor_personaje")){
			nuevoActorPersonajeWindow.dispose();
		}
	}

}
